home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 1 (Walnut Creek)
/
Aminet - June 1993 [Walnut Creek].iso
/
aminet
/
mus
/
play
/
multiplsr.lha
/
player.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-09-14
|
7KB
|
234 lines
/*
* MultiPlayer
* Copyright (C) 1992 Bryan Ford
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* I (the author of MultiPlayer) can be contacted on the Internet at
* "bryan.ford@m.cc.utah.edu". See "Player.doc" for other addresses.
*
* $Id: player.h,v 5.1 92/09/14 18:44:24 BAF Exp Locker: BAF $
* Global header for C modules
*
* $Log: player.h,v $
* Revision 5.1 92/09/14 18:44:24 BAF
* Got rid of C++ style comments
*
* Revision 4.3 92/07/20 20:05:00 BAF
* progload() and progsave() calling format changed
*
* Revision 4.2 92/06/21 11:20:24 BAF
* Migrated regargs to stdargs
*
* Revision 4.1 92/06/06 19:57:33 BAF
* Major_code_cleanup
*
* Revision 3.1 92/05/25 07:54:02 BAF
* GNU-ized.
*
*
*/
#ifndef DOS_DOS_H
#include <dos/dos.h>
#endif
#define CLOCK 3579545
#define callvec(name) { extern void (*name)(void); if(name) (*name)(); }
#define FFperF 3
struct ModNode
{
struct MinNode node;
short size;
char *nameptr;
BPTR dir;
char volume;
char balance;
unsigned char speed;
char filter;
long endtime;
char flags;
char pad;
char name[1];
};
#define MNF_ENDFADE 0x02 /* Fade out on ending */
#define MNF_PTTEMPO 0x04 /* Enable Protracker tempo commands */
#define MNF_NOTPROTRACKER 0x08 /* This is not a Protracker module */
/* Program arguments */
extern struct PlayerArgs
{
char *dir;
char **mods;
char *prog;
char *screen;
int noreq;
int nowin;
int norexx;
int nodetach;
} argarray;
/* One of MultiPlayer's windows (or some other thread) */
struct MPWin
{
void *spec;
short *snappos;
void (*initfunc)(void);
struct RemindNode snapnode;
struct RemindNode checknode;
struct RemindNode closenode;
void *userdata;
struct Window *win;
long sigmask;
};
/* All of the following variables, except the arbitrated globals, are
declared (and explained more fully) in main.c. */
/* System flags */
extern char sysflags, sysflags2;
#define SF_KILL 0x01 /* Kill MultiPlayer ASAP */
#define SF_TIMERUP 0x04 /* Timer/sequence needs updating */
#define SF_WINDOWUP 0x08 /* Windows need updating */
#define SF_REPEAT 0x10 /* Song is repeating */
#define SF_SECOND 0x20 /* One second has gone by */
#define SF_FADEDONE 0x40 /* We're finished fading */
#define SF_FADEPAUSE 0x80 /* We're fading out for a pause */
/* Play mode */
extern char playmode;
#define PM_SEQUENCE 0 /* Play in sequence */
#define PM_RANDOM 1 /* Random order */
#define PM_ONCE 2 /* Play once then unload */
#define PM_OVEROVER 3 /* Play same module over and over */
#define PM_SEQUENCEONCE 4 /* Through sequence once */
/* Show mode */
extern char showmode;
#define SM_NOTHING 0 /* Don't mess with the title bar */
#define SM_CLOCK 1 /* Minute/second music timer */
#define SM_SEQUENCE0 2 /* Sequence starting from 0 */
#define SM_SEQUENCE1 3 /* Sequence starting from 1 */
/* Flash mode */
extern char flashflags;
#define FF_SPECTRUM 0x01 /* Spectrum analyzer */
#define FF_SCOPE 0x02 /* Stereo Scope */
#define FF_QSCOPE 0x04 /* Quadrascope */
#define FF_NOTES 0x08 /* Note scroller */
#define FF_CHANNELS 0x10 /* Channel meter */
#define FF_INFO 0x20 /* Info display (not really "flashy", but handled the same way...) */
/* Module type */
extern char modtype;
#define MTF_MODSPEED 0x01 /* Supports modspeed */
#define MTF_SEQUENCE 0x02 /* Supports sequence display */
#define MTF_REPEAT 0x04 /* Supports repeat detection */
#define MTF_MODIFIED 0x08 /* Mod prefs have been changed */
#define MTF_PROTRACKER 0x10 /* This is the Protracker player */
#define MTF_FILTER 0x20 /* Filter can be controlled */
#define MTF_JUMP 0x40 /* Module can jump to other positions */
/* Help contexts */
#define MAINCONTEXT 0
#define PANELCONTEXT 1
#define PROGWINCONTEXT 2
#define PREFSWINCONTEXT 3
#define FLASHYWINCONTEXT 4
/* Other globals */
extern struct Screen *playerscreen;
extern struct MsgPort *wbappport;
extern struct RemindList dolist;
extern struct RemindList checklist;
extern struct RemindList updatelist;
extern struct RemindList timerlist;
extern struct RemindList snaplist;
extern struct RemindList closelist;
extern struct RemindList endlist;
extern char playmode, showmode;
/* Arbitrated globals */
extern struct MinList modlist;
extern struct ModNode *curmod, *selmod;
#define adddo(node) remind_add(&dolist,node)
/* main.c */
char *showerr(char *mes);
char *setdir(BPTR newdir);
char *setdirname(char *name);
char *progadd(BPTR dir,char *name);
char *progaddargs(int args,struct WBArg *arg);
char *progstart(void);
char *prognext(void);
char *progprev(void);
char *progact(struct ModNode *node);
void progdel(struct ModNode *node);
void progclear(void);
char *progsave(BPTR dir,char *filename);
char *progload(BPTR dir,char *filename,int start);
void addcalls(
struct CallNode *check,
struct CallNode *update,
struct CallNode *timernode,
struct CallNode *end);
void addsigs(long newsigs);
void remsigs(long oldsigs);
char *reqmod(int clear);
char *openfilerequest(void (*donecall)(struct WBArg *args,int count),
void *frspec,void *userstruct);
void closefilerequest(void (*donecall)(struct WBArg *args,int count));
void windowkey(int rawcode,int context);
void windowclick(int rawcode);
void standardcallback(struct GuidMessage *gm);
char *openmpwin(struct MPWin *win);
void closempwin(struct MPWin *win);
void setfinmpwin(struct MPWin *win);
/* window.c */
void windowremake(void);
void windowclose(void);
char *windowopen(void);
/* progwin.c */
char *progwinopenclose(void);
/* Player prototypes */
void setsong(int song);
char *loadmod(char *name);
char *playmod(int song);
char *startmod(char *name,int song);
char *contmod(void);
char *contplaymod(void);
void stopmod(void);
void endmod(void);
int iscantcont(char *errmes);
/* Globals prototypes */
void GlobSetByte(char *var,char value,void *(*notroutine)(void));
void GlobSetWord(short *var,short value,void *(*notroutine)(void));
void GlobSetLong(long *var,long value,void *(*notroutine)(void));
void GlobPreMod(void *var,void *(*notroutine)(void));
void GlobPostMod(void *var,void *(*notroutine)(void));